package com.jie.dao;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.jie.entity.GoodsAttrs;
import lombok.Data;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Data
public class GoodsDao {
    /**
     * 商品id
     */
    @TableId(value = "goods_id", type = IdType.ASSIGN_UUID)
    private String goodsId;

    /**
     * 商品名称
     */
    private String goodsName;

    /**
     * 商品价格
     */
    private BigDecimal goodsPrice;

    /**
     * 商品重量
     */
    private Double goodsWeight;

    /**
     * 商品数量
     */
    private Integer goodsNumber;

    /**
     * 商品状态
     */
    private String goodsState;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 商品评价星级
     */
    private Integer star;

    /**
     * 销售数量
     */
    private Double quantitySold;

    /**
     * 商品分类
     */
    private String goodsCat;

    /**
     * 商品普通图片
     */
    private String pics;

    /**
     * 商品详情图片
     */
    private String detailPics;

    /**
     * 文字的商品介绍
     */
    private String goodsIntroduce;

    /**
     * 创建者
     */
    private Integer createAdminId;
    private List<GoodsAttrs> manyAttrs;
    private List<GoodsAttrs> onlyAttrs;
    public Map<String, Object> toMap() {
        Map<String, Object> map = new HashMap<>();
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            try {
                map.put(field.getName(), field.get(this));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
}
